Let's Encrypt
概要
SSL/TLS 暗号化通信に用いる証明書の認証局 (CA) の 1 つ
https://letsencrypt.org/getting-started/
動作
ACME プロトコル と Let's Encrypt の目的
HTTPS サーバーのセットアップ
人手を介さない証明書の自動更新
Domain Validation (DV)
CA が発行する証明書には DV, OV, EV の種類があるが、Let's Encrypt が発行できるのは DV 証明書のみ。DV 証明書は「申請者がそのドメインを持っているかどうか」を確認できる。
これを証明する方法はいくつかあるが、基本的には「どのドメインの保持者にしかできない操作をさせてそれを確認する」という発想になる。例えば、以下のような操作を求める。
example.com サーバで TLS を有効にする
DNS で _acme-challenge.example.com に対して指定されたテキストを返す設定をする
http://example.com/.well-known/acme-challenge/ に指定されたテキストを返す設定をする
上記のような方法でドメインを認証する方法、その手順の仕様が存在し、それが ACME プロトコル である。
具体的な流れは以下のようになる。最終的には、サーバ上のある公開鍵で識別されるエージェントが、CA より証明書管理の認可を受ける。
1. エージェントが、キーペア を生成する
2. エージェントは、CA に、example.com を制御していることの証明のために必要な動作を問い合わせる
2. CA は、リクエストされたドメインを見て、以下を行う
1つないし複数の チャレンジ を発行する
キーペア を制御していることを証明するために秘密鍵で署名する必要のある nonce (ワンタイムトークン) を提供する
3. エージェントは、チャレンジを達成 (認証用テキストの配置) し、nonce を秘密鍵で署名する
4. エージェントは、CA に検証の準備ができたことを通知する
5. CA は、チャレンジに応じた認証用テキストと、nonce に対する署名の妥当性を検証する
6. CA による検証が無事終了すると、公開鍵で識別されたエージェントに、example.com の証明書管理が認可される
Let’s EncryptのSSL証明書で、安全なウェブサイトを公開 | さくらのナレッジ
How It Works - Let's Encrypt - Free SSL/TLS Certificates
Let's Encrypt の仕組み - Let's Encrypt 総合ポータル
Let's Encrypt を支える ACME プロトコル - Block Rockin’ Codes
証明書を発行するとき、そのドメインが自身の保持したものであることを証明する手段はいくつかあるはず
ACM で証明書を発行する場合は、メールアドレスにメールが来る
cerbot が公開鍵、秘密鍵を生成し、サーバが該当のドメインを管理下に置いていることを Let’s Encrypt の認証局に対して証明する
Let’s Encrypt におけるドメインの認証方法は以下
example.com のDNSレコードに認証用のレコードを追加する。
https://example.com/ 内の公知の URI に、認証用のファイルを設置する。